//
//  LogHandler v 1.0 - logAs package
//  Russell Lowke, December 18th 2011
// 
//  Copyright (c) 2011 Lowke Media
//  see http://www.lowkemedia.com for more information
//  see http://code.google.com/p/lowke/ for code repository
// 
//  Permission is hereby granted, free of charge, to any person obtaining a 
//  copy of this software and associated documentation files (the "Software"), 
//  to deal in the Software without restriction, including without limitation 
//  the rights to use, copy, modify, merge, publish, distribute, sublicense, 
//  and/or sell copies of the Software, and to permit persons to whom the 
//  Software is furnished to do so, subject to the following conditions:
// 
//  The above copyright notice and this permission notice shall be included in 
//  all copies or substantial portions of the Software.
// 
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER  
//  DEALINGS IN THE SOFTWARE. 
//
//

package
{
    import com.lowke.alert.Alert;
    import com.lowke.logAs.LogAs;
    import com.lowke.logAs.event.LogAsEvent;
    
    public class LogHandler
    {
        // generic static handleLog() method
        public static function handleLog(event:LogAsEvent):void 
        {   
            var width:Number = Alert.width;
            if (event.stackTrace) 
            {
                // events with stackTrace need be shown in longer alert
                width *= 2;
            }
            
            var message:String = event.toString();
            switch(event.level) 
            {
                case LogAsEvent.SEVERE:
                    // show severe log as error alert
                    Alert.error(message, true, width);
                    break;
                case LogAsEvent.WARNING:                    
                    // show warning log as warning alert
                    Alert.warning(message, true, width);
                    break;
                case LogAsEvent.INFO:
                    // show info log as info alert
                    Alert.info(message, true, width);
                    break;
                case LogAsEvent.PRINT:
                case LogAsEvent.DEBUG:
                    // trace print and debug logs if not doing so already
                    if (! LogAs.traceLogs) 
                    {
                        trace(message);
                    }
                    break;
            }
        }
    }
}